import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
//        int[] nums1 = {1, 2, 3, 0, 0, 0};
//        int[] nums2 = {2, 5, 6};
        int[] nums1 = {1,1,1,2,2,3};
//        solution.merge(nums1, 3, nums2, 3);
//        System.out.println(solution.removeElement(nums1, 2));
        solution.removeDuplicates2(nums1);
    }

    public int[] twoSum(int[] nums, int target) {
        int[] array = new int[2];
        int flag = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = nums.length - 1; j > i; j--) {
                if (nums[i] + nums[j] == target) {
                    array[flag] = i;
                    array[flag + 1] = j;
                    return array;
                }
            }
        }
        return null;
    }

    public void merge(int[] nums1, int m, int[] nums2, int n) {
        for (int i = 0; i < n; i++) {
            nums1[i + m] = nums2[i];
        }
        Arrays.sort(nums1);
    }

    public int removeElement(int[] nums, int val) {
        int n = nums.length;
        int left = 0;
        for (int right = 0; right < n; right++) {
            if (nums[right] != val) {
                nums[left] = nums[right];
                left++;
            }
        }
        return left;
    }

    public int removeDuplicates(int[] nums) {
        int n = nums.length;
        int left = 0;
        for (int i = 1; i < n; i++) {
            if (nums[left] != nums[i]) {
                left++;
                nums[left] = nums[i];
            }
        }
        return left;
    }

//    public int removeDuplicates2(int[] nums) {
//        int n = nums.length;
//        int left = 0;
//        boolean flag = true;
//        for (int i = 1; i < n; i++) {
//            if (nums[left] != nums[i]) {
//                left++;
//                nums[left] = nums[i];
//                flag = true;
//            }
//            if (nums[left] == nums[i] && flag == true) {
//                if (i == n - 1) {
//                    nums[left] = nums[i];
//                    break;
//                }
//                left++;
//                flag = false;
//            }
//        }
//        return left+1;
//    }

}
